package limit;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 分布式锁注解
 */

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributeLock {

    /**
     * 锁场景
     */
    public String scene();

    /**
     * 加锁的key，优先取key（），如果没有，则取KeyExpression
     */
    public String key() default "NONE";

    /**
     * spel表达式
     */
    public String keyExpression() default "DEFAULT";

    /**
     * 超时时间，毫秒
     * 默认情况下不设置超时时间，会自动续期
     */
    public int expireTime() default -1;

    /**
     * 加锁等待，毫秒
     * 默认情况下不设置等待时长，不做等待
     */
    public int waitTime() default -1;

}
